using System.Collections.Generic;
using System.IO;
using Sixeyed.CodeGeneration.Metadata.Interfaces;

namespace Sixeyed.CodeGeneration.Metadata.FileSystem.Interfaces
{
    /// <summary>
    /// Represents a file system metadata source
    /// </summary>
    public interface IFileSystemSource : IMetadataSource
    {
        /// <summary>
        /// Returns a list of file names matching the given pattern
        /// </summary>
        /// <param name="searchPattern">Pattern to match</param>
        /// <returns>List of matching file name</returns>
        List<string> GetFileList(string searchPattern);

        /// <summary>
        /// Returns a list of file infos for file in the given path
        /// </summary>
        /// <param name="path">Path to find files</param>
        /// <returns>List of file infos</returns>
        List<FileInfo> GetFileInfoList(string path);

        /// <summary>
        /// Returns string of file contents
        /// </summary>
        /// <param name="path">Path of file to load</param>
        /// <returns>File contents</returns>
        string GetFileContent(string path);

        /// <summary>
        /// Returns a list of directory names
        /// </summary>
        /// <returns>List of directory names</returns>
        List<string> GetDirectoryList();
    }
}
